package xyz.fivefaith.cloud.common.core.constant;

/**
 * 缓存组名称常量
 *
 * <p>key 格式为 cacheNames#ttl#maxIdleTime#maxSize#local
 *
 * <p>ttl 过期时间 如果设置为0则不过期 默认为0 maxIdleTime 最大空闲时间 根据LRU算法清理空闲数据 如果设置为0则不检测 默认为0 maxSize 组最大长度
 * 根据LRU算法清理溢出数据 如果设置为0则无限长 默认为0 local 默认开启本地缓存为1 关闭本地缓存为0
 *
 * <p>例子: test#60s、test#0#60s、test#0#1m#1000、test#1h#0#500、test#1h#0#500#0
 *
 * @author Lion Li
 */
public interface CacheConst {

    /* ****************************** */
    /* ********** 业务无关的key ********** */
    /* ****************************** */
    String GLOBAL_REDIS_KEY = "global:";

    /** 验证码 redis key */
    String CAPTCHA_CODE_KEY = GLOBAL_REDIS_KEY + "captcha_codes:";

    /** 防重提交 redis key */
    String REPEAT_SUBMIT_KEY = GLOBAL_REDIS_KEY + "repeat_submit:";

    /** 限流 redis key */
    String RATE_LIMIT_KEY = GLOBAL_REDIS_KEY + "rate_limit:";

    /** 三方认证 redis key */
    String SOCIAL_AUTH_CODE_KEY = GLOBAL_REDIS_KEY + "social_auth_codes:";

    /* ****************************** */
    /* ********** 业务key ********** */
    /* ****************************** */
    /** 在线用户 redis key */
    String ONLINE_TOKEN_KEY = "online_tokens:";

    /** 参数管理 cache key */
    String SYS_CONFIG_KEY = "sys_config:";

    /** 字典管理 cache key */
    String SYS_DICT_KEY = "sys_dict:";

    /** 登录账户密码错误次数 redis key */
    String PWD_ERR_CNT_KEY = "pwd_err_cnt:";

    /* ****************************** */
    /* ********** 缓存组名称常量 ********** */
    /* ****************************** */

    /** 演示案例 */
    String DEMO_CACHE = "demo:cache#60s#10m#20";

    /** 系统配置 */
    String SYS_CONFIG = "sys_config";

    /** 数据字典 */
    String SYS_DICT = "sys_dict";

    /** 数据字典类型 */
    String SYS_DICT_TYPE = "sys_dict_type";

    /** 租户 */
    String SYS_TENANT = GLOBAL_REDIS_KEY + "sys_tenant#30d";

    /** 客户端 */
    String SYS_CLIENT = GLOBAL_REDIS_KEY + "sys_client#30d";

    /** 用户账户 */
    String SYS_USER_NAME = "sys_user_name#30d";

    /** 用户名称 */
    String SYS_NICKNAME = "sys_nickname#30d";

    /** 部门 */
    String SYS_DEPT = "sys_dept#30d";

    /** OSS内容 */
    String SYS_OSS = "sys_oss#30d";

    /** 角色自定义权限 */
    String SYS_ROLE_CUSTOM = "sys_role_custom#30d";

    /** 部门及以下权限 */
    String SYS_DEPT_AND_CHILD = "sys_dept_and_child#30d";

    /** OSS配置 */
    String SYS_OSS_CONFIG = GLOBAL_REDIS_KEY + "sys_oss_config";

    /** 在线用户 */
    String ONLINE_TOKEN = "online_tokens";
}
